/**
 * 用户登录参数类型
 */
export interface UserLoginParam {
  /** 用户名 */
  username: string;
  /** 密码 */
  password: string;
}

/**
 * 用户注册参数类型
 */
export interface UserRegisterParam {
  /** 用户名 */
  username: string;
  /** 密码 */
  password: string;
  /** 邮箱 */
  email: string;
}

/**
 * 用户登录返回类型
 */
export interface LoginUserVO {
  /** 用户ID */
  id: number;
  /** 用户名 */
  username: string;
  /** 真实姓名 */
  realName: string;
  /** 邮箱 */
  email: string;
  /** 手机号 */
  phone: string;
  /** 性别 */
  gender: number;
  /** 状态 */
  status: number;
  /** 创建时间 */
  createTime: string;
  /** 更新时间 */
  updateTime: string;
  /** 登录token */
  token: string;
}

/**
 * 通用后端响应类型
 */
export interface Result<T = unknown> {
  code: number;
  data: T;
  message: string;
}

/**
 * 忘记密码参数类型
 */
export interface ForgotPasswordParam {
  /** 用户名或邮箱 */
  usernameOrEmail: string;
}

/**
 * 用户分页查询参数类型
 */
export interface UserPageParam {
  /** 用户名 */
  username?: string;
  /** 手机号 */
  phone?: string;
  /** 性别 */
  gender?: number;
  /** 状态 */
  status?: number;
  /** 当前页码 */
  pageNum: number;
  /** 每页条数 */
  pageSize: number;
}

/**
 * 用户信息VO类型
 */
export interface UserVO {
  id: number;
  username: string;
  realName: string;
  email: string;
  phone: string;
  gender: number;
  status: number;
  createTime: string;
  updateTime: string;
}

/**
 * 分页结果通用类型
 */
export interface PageResult<T> {
  records: T[];
  list: T[];
  total: number;
  pageNum: number;
  pageSize: number;
  totalPages?: number;
}

/**
 * 用户编辑参数类型
 */
export interface UserEditParam {
  /** 用户ID */
  id: number;
  /** 用户名 */
  username: string;
  /** 真实姓名 */
  realName: string;
  /** 邮箱 */
  email: string;
  /** 手机号 */
  phone: string;
  /** 性别 */
  gender: number;
  /** 状态 */
  status: number;
}

/**
 * 用户新增参数类型
 */
export interface UserAddParam {
  /** 用户名 */
  username: string;
  /** 密码 */
  password: string;
  /** 真实姓名 */
  realName: string;
  /** 邮箱 */
  email: string;
  /** 手机号 */
  phone: string;
  /** 性别 */
  gender: number;
  /** 状态 */
  status: number;
}

/**
 * 批量删除用户参数类型
 */
export interface UserDeleteByIdsParam {
  /** 用户ID列表 */
  ids: number[];
} 